package com.lcz.authority.common.config;

import cn.hutool.core.convert.Convert;

import java.util.HashMap;

/**
 * @author lcz
 * @desc 网页配置扩展
 * @mail lcz_0130@163.com
 * @date 2024/05/06
 */

public class ConfigExpander {

    /**
     * 用户默认头像url
     */
    public static String getUserDefaultAvatar() {
        return ConfigContext.me().selectConfigByKey("sys.user.default.avatar");
    }

    /**
     * 验证码类型
     */
    public static String getLoginCaptchaType() {
        return ConfigContext.me().selectConfigByKey("sys.login.captchaType", String.class, "math");
    }

    /**
     * 获取文件保存目录
     */
    public static String getFileProfile() {
        String osName = System.getProperty("os.name").toLowerCase();
        if (osName.contains("win")) {
            return ConfigContext.me().selectConfigByKey("sys.local.profile.win", String.class, "D:\\uploadPath");
        }
        if (osName.contains("mac")) {
            return ConfigContext.me().selectConfigByKey("sys.local.profile.mac", String.class, "~/uploadPath");
        }
        if (osName.contains("linux")) {
            return ConfigContext.me().selectConfigByKey("sys.local.profile.linux", String.class, "/data/uploadPath");
        }
        return null;
    }

    /**
     * 获取头像上传路径
     */
    public static String getAvatarPath() {
        return getFileProfile() + "/avatar";
    }


    /**
     * 全局日志记录，开启则所有请求都将记录日志
     */
    public static Boolean getGlobalControllerOpenFlag() {
        String flag = ConfigContext.me().selectConfigByKey("sys.log.global.flag", String.class, "false");
        return Convert.toBool(flag);
    }

    /**
     * 获取导入上传路径
     */
    public static String getImportPath() {
        return getFileProfile() + "/import";
    }


    /**
     * 获取下载路径
     */
    public static String getDownloadPath() {
        return getFileProfile() + "/download/";
    }

    /**
     * 获取上传路径
     */
    public static String getUploadPath() {
        return getFileProfile() + "/upload";
    }

    /**
     * smtp服务器信息
     */
    public static HashMap<String, String> getSmtp() {
        HashMap<String, String> smtpMap = new HashMap<>();
        //smtp服务器地址
        smtpMap.put("host", ConfigContext.me().selectConfigByKey("sys.email.smtp.host", String.class));
        //smtp服务端口
        smtpMap.put("port", ConfigContext.me().selectConfigByKey("sys.email.smtp.port", String.class));
        //邮箱的发送方邮箱
        smtpMap.put("sendAccount", ConfigContext.me().selectConfigByKey("sys.email.send.account", String.class));
        //邮箱的密码或者授权码
        smtpMap.put("password", ConfigContext.me().selectConfigByKey("sys.email.password", String.class));
        //邮箱发送时的用户名
        smtpMap.put("sendName", ConfigContext.me().selectConfigByKey("sys.email.send.name", String.class));
        return smtpMap;
    }
}
